<?php

/*
 * Usuario BLL.
 * @Autor: Inicial.cl.
 */

class UsuarioBLL {

    //METODO PARA GRABAR
    public function grabar($oUsuario) {
        $strPassword = $oUsuario->getPassword();
        $strPassword = Util::isNullOrEmpty($strPassword) ? "" : md5($strPassword);
        $oUsuario->setPassword($strPassword);
        $this->setearValoresVacios($oUsuario);
        return UsuarioDAL::grabar($oUsuario);
    }

    public function grabarDatosMin($oUsuario, $confirmaPwd) {
        $mensaje = "";
        if (Util::isNullOrEmpty($oUsuario->getUsuario())) {
            $mensaje = "Usuario,";
        }
        if (Util::isNullOrEmpty($oUsuario->getEmail())) {
            $mensaje = "Email,";
        }
        if (Util::isNullOrEmpty($oUsuario->getPassword())) {
            $mensaje = "Contrase&ntilde;a,";
        }
        if (Util::isNullOrEmpty($oUsuario->getFechaNacimiento())) {
            $mensaje = "Fecha nacimiento,";
        }
        if (Util::isNullOrEmpty($oUsuario->getSexo())) {
            $mensaje = "Sexo,";
        }
        if ($oUsuario->getPassword() != $confirmaPwd) {
            $mensaje = "Contrase&ntilde;a no coincide,";
        }

        if (Util::isNullOrEmpty($mensaje)) {
            $idNuevo = UsuarioDAL::grabarDatosMinimos($oUsuario);
            if (!Util::isNullOrEmpty($idNuevo)) {
                if (is_int($idNuevo) && $idNuevo > 0) {
                    SendMail::enviarEmailUsuarioNuevo($oUsuario, $idNuevo);
                    $mensaje = "OK";
                } else {
                    $mensaje = "Error al crear usuario";
                }
            }
        } else {
            $mensaje = "Debe ingresar los siguientes campos " . $mensaje;
        }
        return $mensaje;
    }

    //METODO PARA EDITAR
    public function editar($oUsuario) {
        if (Util::isNullOrEmpty($oUsuario->getNuevaPassword())) {
            $strPassword = $oUsuario->getPassword();
        } else {
            $strPassword = md5($oUsuario->getNuevaPassword());
        }
        $oUsuario->setPassword($strPassword);
        $this->setearValoresVacios($oUsuario);
        return UsuarioDAL::editar($oUsuario);
    }

    //METODO PARA EDITAR SU PROPIO PERFIL
    public function editarPerfilPropio($oUsuario) {
        return UsuarioDAL::editarPerfilPropio($oUsuario);
    }

    //METODO PARA LISTAR
    public function listar($oUsuario) {
        return UsuarioDAL::listar($oUsuario);
    }

    //METODO PARA OBTENER POR ID
    public function obtenerPorId($id) {
        return UsuarioDAL::obtenerPorId($id);
    }

    //METODO PARA ELIMINAR
    public function eliminar($id) {
        return UsuarioDAL::eliminar($id);
    }

    //valida valores vacios
    private function setearValoresVacios($oUsuario) {
        $idProfesion = $oUsuario->getIdProfesion();
        $idComuna = $oUsuario->getIdComuna();

        //valida valores "vacio"
        if ($idProfesion == Combo::VALOR_SELECCIONE || $idProfesion == "-1") {
            $oUsuario->setIdProfesion("null");
        }
        if ($idComuna == Combo::VALOR_SELECCIONE || $idComuna == "-1") {
            $oUsuario->setIdComuna("null");
        }

        return $oUsuario;
    }

    //METODO PARA ELIMINAR
    public function cerrarSession($id) {
        return UsuarioDAL::cerrarSession($id);
    }

    public function validarLogin($oUsuario) {
        $mensaje = "";
        $oUsuarioValido = new Usuario();
        if (Util::isNullOrEmpty($oUsuario->getEmail())) {
            $mensaje .= "Usuario / Email ";
        }
        if (Util::isNullOrEmpty($oUsuario->getPassword())) {
            $mensaje .= "Contraseña";
        }

        if (Util::isNullOrEmpty($mensaje)) {
            $oUsuario->setPassword(md5($oUsuario->getPassword()));
            $oUsuarioValido = UsuarioDAL::validarLogin($oUsuario);
            if ($oUsuarioValido->getId() > 0 && $oUsuarioValido->getIdEstado() == 1) {
                Util::setSession("USUARIO", $oUsuarioValido);
                $mensaje = "OK";
            } else if ($oUsuarioValido->getId() > 0 && $oUsuarioValido->getIdEstado() == 2) {
                Util::setSession("USUARIO", null);
                $mensaje = "Tu usuario a&uacute;n no ha sido activado, revisa tu correo para finalizar de activar tu cuenta";
            } else {
                Util::setSession("USUARIO", null);
                $mensaje = "KO";
            }
        } else {
            $mensaje = "Debe ingresar los siguientes campos " . $mensaje;
        }
        return $mensaje;
    }

    public function recuperarPassword($email, $usuario) {
        return UsuarioDAL::recuperarPassword($email, $usuario);
    }

    //METODO PARA CAMBIAR PASSWORD
    public function cambiarPassword($idUsuario, $password) {
        return UsuarioDAL::cambiarPassword($idUsuario, $password);
    }

    //METODO PARA OBTENER USUARIO PENDIENTE DE VALIDACION
    public function getUsuarioPendiente($idUsuario) {
        return UsuarioDAL::getUsuarioPendiente($idUsuario);
    }

    //METODO PARA VALIDAR USUARIO
    public function validarUsuario($idUsuario) {
        return UsuarioDAL::validarUsuario($idUsuario);
    }

    //METODO PARA VALIDAR SI USUARIO O EMAIL EXISTE
    public function validarUsuarioEmailExiste($usuario, $email) {
        return UsuarioDAL::validarUsuarioEmailExiste($usuario, $email);
    }

    public function validarLoginAdmin($oUsuario) {
        $mensaje = "";
        $oUsuarioValido = new Usuario();
        if (Util::isNullOrEmpty($oUsuario->getEmail())) {
            $mensaje .= "Usuario / Email ";
        }
        if (Util::isNullOrEmpty($oUsuario->getPassword())) {
            $mensaje .= "Contraseña";
        }

        if (Util::isNullOrEmpty($mensaje)) {
            $oUsuario->setPassword(md5($oUsuario->getPassword()));
            $oUsuarioValido = UsuarioDAL::validarLoginAdmin($oUsuario);
            if ($oUsuarioValido->getId() > 0 && $oUsuarioValido->getIdEstado() == 1) {
                Util::setSession("USUARIO", $oUsuarioValido);
                $mensaje = "OK";
            } else if ($oUsuarioValido->getId() > 0 && $oUsuarioValido->getIdEstado() == 2) {
                Util::setSession("USUARIO", null);
                $mensaje = "Tu usuario a&uacute;n no ha sido activado, revisa tu correo para finalizar de activar tu cuenta";
            } else {
                Util::setSession("USUARIO", null);
                $mensaje = "KO";
            }
        } else {
            $mensaje = "Debe ingresar los siguientes campos " . $mensaje;
        }
        return $mensaje;
    }

    //METODO PARA LISTAR
    public function listarUsuariosPago($oUsuario) {
        return UsuarioDAL::listarUsuariosPago($oUsuario);
    }


}

?>